package com.shioirikukuri.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ReserveDinnerDTO {
	/*************************预约类型常量****************************/
	public static final String TYPE_NORMAL = "NORMAL";      // 普通预约
	public static final String TYPE_SPECIAL = "SPECIAL";    // 特殊活动（如婚礼）
	public static final String TYPE_SILENT = "SILENT";      // 静音包厢

	/*************************订单状态常量****************************/
	public static final String STATUS_WAITING_ORDER = "WAITING_ORDER"; // 待点餐
	public static final String STATUS_WAITING_PAYMENT = "WAITING_PAYMENT"; // 待支付
	public static final String STATUS_PAID = "PAID";              // 已支付
	public static final String STATUS_CANCELLED = "CANCELLED";      // 已取消
	public static final String STATUS_COMPLETED = "COMPLETED";      // 已完成
	public static final String STATUS_EXPIRED = "EXPIRED";          // 已过期
	public static final String STATUS_REFUNDED = "REFUNDED";        // 已退款

	/*************************时间段常量****************************/
	public static final String TIME_SLOT_MORNING = "MORNING";    // 上午
	public static final String TIME_SLOT_AFTERNOON = "AFTERNOON";// 下午

	private Integer orderId;                       // 预约订单ID
	private String phoneNumber;                    // 预约用户手机号（身份标识）
	private String reservationType;                // 预约类型
	private Integer seatCount;                     // 就座人数/桌位数
	private Double serviceTotalPrice;              // 服务总价格（普通预约为0）
	private Integer diningOrderId;                 // 点餐订单ID（可为null）
	private String orderStatus;                    // 订单状态（必须所有的点餐订单都支付才判定为已支付）
	private LocalDate reservationDate;              // 预约日期[7]
	private String timeSlot;                       // 时间段（上午/下午）
	private String dishes;                       // 所点菜品（JSON格式存储）[9](@ref)
	private String combos;                       // 所点套餐（JSON格式存储）[9](@ref)
	private Double baseTotal;                    // 点餐总价[9](@ref)
	private Double priceAdjustment;              // 价格浮动比例（%）[9](@ref)
	private Long couponId;                        //普通预约使用的优惠卷类型ID,若为其他类型预约，则强制为null
	private Double finalTotal;                   // 最终总价[9](@ref)
	private LocalDateTime createTime;            // 创建时间[9](@ref)


}
